package com.huosu.commons.enums;

import com.google.common.collect.Lists;
import lombok.Getter;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 消息通知类型
 * @author zhangjian
 * @since 2019-12-10
 */
@Getter
public enum NoticeNumberEnum {

    /**
     * 算力异常
     */
    one(1,"算力异常"),

    /**
     * 配置错误
     */
    two(2,"配置错误:用户名配置错误errorLog"),

    /**
     *网络异常：断网
     */
    three(3,"网络异常：断网"),

    /**
     * 监测异常
     */
    four(4,"监测异常：异常未防护提醒"),

    /**
     * 监测异常
     */
    five(5,"监测异常：矿机自动重启通知"),

    /**
     * 监测异常
     */
    six(6,"监测异常：重启次数提醒"),

    /**
     * 离线通知
     */
    seven(7,"离线通知"),

    /**
     *网络异常:回路
     */
    eight(8,"网络异常：回路"),

    /**
     * 离线通知
     */
    nine(9,"离线通知：ping不通的离线"),

    /**
     * 拒绝率高通知
     */
    ten(10,"拒绝率偏高通知")

    ;


    private Integer code;

    private String value;


    NoticeNumberEnum(Integer code, String value) {
        this.code = code;
        this.value = value;
    }

    public static List toList() {
        List list = Lists.newArrayList();
        for (NoticeNumberEnum stateEnum : NoticeNumberEnum.values()) {
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("code", stateEnum.getCode());
            map.put("value", stateEnum.getValue());
            list.add(map);
        }
        return list;
    }


    /**
     * 根据Key得到枚举的Value
     * Lambda表达式，比较判断（JDK 1.8）
     *
     * @param key
     * @return
     */
    public static NoticeNumberEnum getEnumType(Integer key) {
        return Arrays.asList(NoticeNumberEnum.values()).stream()
                .filter(e -> e.getCode().equals(key))
                .findFirst().orElse(null);
    }


}
